package com.entity.myInterface;

import java.util.List;

import com.entity.paging.UserSearchCondition;
import com.okok.entity.User;
import com.shiro.entity.Role;
import org.springframework.data.domain.Page;



public interface UserRepositoryCustom {
	
	public Page<User> search(int pageNo, int pageSize, String condition, String app);
	
	public List<User> findBy(String username, String phone);
	
	/**
	 * 根据id查询用户
	 * @param id
	 * @return
	 */
	public User findByIdd(String id);
	
	
	/**
	 * 
	 * @Description:删除
	 * @param id
	 * @param op
	 * @Author wendel
	 * @Date:2017年3月15日
	 */
	public void delete(String id, String op);
	

	/**
	 * 分页查询
	 * @return
	 */
	public Page<User> findByPage(UserSearchCondition rsc);
	
	public User findByMobilPhone(String mobilPhone);
	
	/**
	 * 更新 
	 * @param user
	 * @param op
	 */
	public void update(User user, String op);
	
	public List<User> findAllNotDel();
	
	/**
	 * 根据用户帐号进行查询
	 * @param loginName
	 * @return
	 */
	public User findByLoginName(String loginName);

	/**
	 * 更新用户备注
	 * @param id
	 * @param desc
	 * @param op
	 */
	public void updateDesc(String id, String desc, String op);

	/**
	 * 查找角色是管理员的作为客服
	 *
	 * @Author wendel
	 * @Date 2016年12月13日
	 * @param role
	 * @return
	 */
	public List<User> findByRoleIsAdmin(Role role);

	/**
	 * 更新编辑信息
	 *
	 * @Author wendel
	 * @Date 2016年12月21日
	 * @param id
	 * @param loginName
	 * @param abbreviation
	 * @param company
	 * @param companyAddr
	 * @param contact
	 * @param phone
	 * @param email
	 * @param qq
	 * @param weixin
	 * @param op
	 */
	public void updateEdit(String id, String loginName, String abbreviation,
						   String company, String companyAddr, String contact, String phone,
						   String email, String qq, String weixin, String op);
	
	/**
	 * 根据邮箱地址查询用户
	 * @param email
	 * @return
	 */
	public User findByEmail(String email);
	
	/**
	 * 修改用户的链接点击时间stamp值
	 * @param id
	 * @param linkTimeStamp
	 * @param currentUserName
	 */
	public void updateTimeStampById(String id, String linkTimeStamp, String currentUserName);
	
	/**
	 * 根据用户id对用户角色进行修改
	 * @param roles
	 * @param id
	 */
	public void updateRolesById(List<Role> roles, String id, String op);
	
	/**
	 * 根据角色id查询用户集合
	 * @param roleId
	 * @return
	 */
	public List<User> findByRoleId(String roleId);
	

	
	/**
	 * 更新用户基本信息
	 * @author larry
	 * @date 2017年4月26日
	 * @param contact
	 * @param phone
	 * @param email
	 * @param qq
	 * @param weixin
	 */
	public void updateBaseInfo(String id, String contact, String phone, String email, String qq, String weixin, String op);
	
	/**
	 * 更新clientId
	 * @author larry
	 * @date 2017年5月23日
	 * @param id
	 * @param clientId
	 * @param op
	 */
	public void updateClientId(String id, String clientId, String op);
	


	/**
	 * 模糊查询登陆名
	 * @author larry
	 * @date 2017年6月22日
	 * @param loginName
	 * @return
	 */
	public List<User> findByLikeLoginName(String loginName);

	public List<User> findByRoleIsCsAndCityId(Role role, String cityId);
	
	/**
	 * 客服查询我的客户（mgm推送客户）
	 * @author larry
	 * @date 2017年7月31日
	 * @param userIds
	 * @param searchWord
	 * @return
	 */
	public List<User> findMyUsers(List<String> userIds, String searchWord);
	
	/**
	 * 根据ids查询用户
	 * @author larry
	 * @date 2017年7月31日
	 * @param ids
	 * @return
	 */
	public List<User> findByIds(List<String> ids);
	
	/**
	 * 更新移动用户的操作系统字段
	 * @author larry
	 * @date 2017年8月7日
	 * @param id
	 * @param os
	 * @param op
	 */
	public void updateMobileOs(String id, String os, String op);
	

}